package controller;

import javax.swing.JFrame;

import model.container.AangebodenCursussen;
import model.container.Cursisten;
import model.container.Cursussen;
import model.container.Inschrijvingen;
import model.container.Lectoren;
import view.IO;
import view.InschrijvingenFrame;
import view.Menu;
import view.PlanningFrame;

public class OpstartController {
	private final Menu menu;
	private JFrame planning, inschrijving, lessenroosterOverzicht, opdrachtOverzicht;
	private final PlanningController planningController;
	private final InschrijvingController inschrijvingController;
	private final LessenroosterOverzichtController lessenroosterOverzichtController;
	private final OpdrachtOverzichtController opdrachtOverzichtController;
	private final AfsluitController afsluiten;
	private final Cursussen cursussen;
	private final AangebodenCursussen aangebodenCursussen;
	private final Lectoren lectoren;
	private final Cursisten cursisten;
	private final Inschrijvingen inschrijvingen;

	public OpstartController() throws Exception {
		// opvullen containers
		aangebodenCursussen = new AangebodenCursussen();
		cursussen = new Cursussen();
		lectoren = new Lectoren();
		cursisten = new Cursisten();
		inschrijvingen = new Inschrijvingen();
		cursussen.uitlezen();
		lectoren.setBeschikbareCursussen(cursussen);
		lectoren.uitlezen();
		aangebodenCursussen.setCursussen(cursussen);
		aangebodenCursussen.setLectoren(lectoren);
		aangebodenCursussen.uitlezen();
		// VrijeCursist test1 = new VrijeCursist(0, "Yves", "belg");
		// HerscholingCursist test2 = new HerscholingCursist(1, "Nico", "bachelor", "ziekte");
		// cursisten.add(test1);
		// cursisten.add(test2);
		cursisten.uitlezen();
		inschrijvingen.uitlezen();
		planningController = new PlanningController(aangebodenCursussen, cursussen, lectoren);
		inschrijvingController = new InschrijvingController(cursisten, aangebodenCursussen, inschrijvingen);
		lessenroosterOverzichtController = new LessenroosterOverzichtController();
		opdrachtOverzichtController = new OpdrachtOverzichtController();
		afsluiten = new AfsluitController(cursussen, aangebodenCursussen, lectoren);
		menu = new Menu("Plannen van aangeboden cursussen", "Inschrijven voor cursus door cursist",
				"Overzicht lessenroosters cursisten", "Overzicht opdrachten lectoren");
	}

	public void execute() {
		int keuze = menu.getMenuKeuze();

		switch (keuze) {
		case 1:
			planning = new PlanningFrame(this, planningController);
			planning.setVisible(true);
			break;
		case 2:
			inschrijving = new InschrijvingenFrame(this, inschrijvingController);
			inschrijving.setVisible(true);
			break;
		case 3: // openen lessenroosterOverzicht frame
			break;
		case 4: // openen opdrachtOverzicht frame
			break;
		case 5:
			// afsluiten.execute();
			break;
		default:
			if (keuze != menu.getStopWaarde()) {
				IO.toonStringMetVenster("Je hebt een verkeerde keuze gemaakt!!!");
				keuze = menu.getMenuKeuze();
			}
		}
	}

	public static void main(String[] args) throws Exception {
		new OpstartController().execute();

	}

}
